clearerr関数は、ファイルポインタで示されるストリームのEOF(end of file)とエラーの状態をクリアします。
#include <stdio.h>
void clearerr(FILE *stream);
*streamはfopen関数で取得した、ファイルポインタを指定します。
次の例題プログラムはファイルの最後(EOF)まで入力した後、再度、ファイルの先頭から入力しています。ここでは、エラー状態をクリアする目的でclearerr関数を使っています。
プログラム 例
#include <stdio.h> int main(void) { FILE *fp; int in_data; if ((fp = fopen('temp.txt', 'r')) != NULL) { printf('1回目の表示\n'); while((in_data = fgetc(fp)) != EOF) { putchar(in_data); } clearerr(fp); /* ファイル位置表示子をファイルの先頭に戻す */ rewind(fp); printf('\n2回目の表示\n'); while((in_data = fgetc(fp)) != EOF) { putchar(in_data); } fclose(fp); } else { printf('ファイルのオープンに失敗しました\n'); } return 0; }
例の実行結果
$ cat temp.txt Hello World!!. $ $ ./clearerr.exe 1回目の表示 Hello World!!. 2回目の表示 Hello World!!. $